<?php
session_start();
include('include/config.php');
include('include/fonctions.php');
$messageErrMail = 'Page : connexion.php<br />';
$msgErr = $msgErrInscription = '';
$_SESSION['aboOk']=false;

//on récupère les info de la page tarif
if (isset($_GET['tarif'])) {
    $_SESSION['tarif'] = secure($_GET['tarif']);
}

//on récupère les info du form de connexion
if (isset($_POST['envoyer'])) {
    //on va tester que l'on a bien les deux infos pseudo et password
    if (isset($_POST['email']) && isset($_POST['mdp']) && !empty($_POST['email']) && !empty($_POST['mdp'])) {
        //on va sécuriser les variables pour la suite
        $email = secure($_POST['email']);
        $password = secure($_POST['mdp']);

        //on récupère l'id, le pseudo et le password en base
        $connection = connexionBdd();
        $select = $connection->prepare('SELECT `prof_id`, `prof_mail`, `prof_mdp`, `prof_banni`, `prof_paye` FROM `prof` WHERE `prof_mail` = :email');
        $select->setFetchMode(PDO::FETCH_OBJ);
        $select->bindParam(':email', $email, PDO::PARAM_STR);
        $select->execute();
        $countSelect = $select->rowCount();
        $enregistrement = $select->fetch();
        $select->closeCursor();

        if ($countSelect == 1) {

            //on va tester que le compte est validé, sinon on prend le temps de l'indiquer au client
            if ($enregistrement->prof_banni < 1) {
                if (sha1($password) == $enregistrement->prof_mdp) {
                    $_SESSION['prof_id'] = $enregistrement->prof_id;
                    $_SESSION['prof_mdp'] = $enregistrement->prof_mdp;
                    $_SESSION['prof_abo'] = $enregistrement->prof_paye;
                    
                    if (isset($_POST['cookie']) && $_POST['cookie'] == 'on') {
                        setcookie('prof_id', $enregistrement->prof_id, time() + 365 * 24 * 3600);
                        setcookie('prof_mdp', $enregistrement->prof_mdp, time() + 365 * 24 * 3600);                        
                    }
                    //on va supprimer l'ensemble des variable de session dont on a pas besoin pour éviter
                    //de les trimbaler sur le reste du site.
                    unset($_SESSION['pseudo_info']);
                    unset($_SESSION['mdp_info']);
                    unset($_SESSION['form_mdp']);
                    unset($_SESSION['mdp_verif_info']);
                    unset($_SESSION['form_mdp_verif']);
                    unset($_SESSION['mail_info']);
                    unset($_SESSION['form_mail']);
                    unset($_SESSION['captcha_info']);
                    unset($_SESSION['captcha']);

                    //On va tester à présent que le compte meme si il est validé
                    //A un abonnelent valide
                    //1 on laisse passer les compte par cb validée (1), chq validée (3) et les comptes gratuits (7)
                    if (in_array($enregistrement->prof_paye, array(1,2,3,7))) {                    
                        $_SESSION['aboOk']=true;
                        //redirection vers la page d'accueil d'un compte
                        header('Location: ' . ROOTPATH . '/ajout-devoir.php');
                    } else {                       
                            //Sinon on renvoit vers la page de paiement                                                
                            header('Location: ' . ROOTPATH . '/inscription-3.php');                        
                    }
                } else {
                    $msgErr = '<div class="warning">Votre mot de passe n\'est pas correct.</div>';
                }
            } else {
                switch ($enregistrement->prof_banni) {
                    case 1:
                        $msgErr = '<div class="error"><p>Votre compte n\'est pas validé.</p>
                                    <p>Veuillez regarder dans vos mails pour cliquer sur le lien de validation.</p></div>';
                        break;
                    case 2:
                        $msgErr = '<div class="error"><p>Votre compte est bloqué par un administrateur.</p>
                                    <p>Si vous ne comprenez pas pourquoi votre compte est bloqué, contactez nous.</p></div>';
                        break;
                    case 3:
                        $msgErr = '<div class="error"><p>Votre compte n\'a pas été validé dans les temps.</p>
                                    <p>Contactez nous si vous souhaitez à présent valider votre compte.</p></div>';
                        break;
                    default:
                        $msgErr = '<div class="error"><p>Il existe un soucis sur votre compte</p>
                                    <p>Notre équipe technique vient d\'en être informé. Une fois le soucis résolu, nous vous contacterons pour plus d\'informations.</p>
                                    <p>Nous vous remercions pour la confiance que vous nous apportez.</p></div>';
                        $messageErrMail .='Attention champs banni incohérent sur le membre : ' . $enregistrement->prof_id . '<br/>';
                        error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
                        break;
                }
            }
        } else {
            $msgErr = '<div class="error">"<em>' . $email . '</em>" n\'est pas connu.</div>';
            //si on trouve plus d'un pseudo on envoie un mail à l'admin pour le prévenir de se doublon théoriquement imposible
            if ($countSelect > 1) {
                $messageErrMail .='Attention doublon sur un mail : ' . $email . '<br/>';
                error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
            }
        }
    } else {
        $msgErr = '<div class="warning">Merci de renseigner votre mot de passe.</div>';
    }
}

//ici on récupère les infos du form d'inscription
$messageErrMail = 'Page : inscription.php<br />';



/* * *********************************************************************
 *                      Gestion de l'inscription
 * ********************************************************************* */

$email = $password = $_SESSION['pseudo_info'] = $_SESSION['mdp_info'] = $_SESSION['form_mdp'] = $_SESSION['mdp_verif_info'] = $_SESSION['form_mdp_verif'] = $_SESSION['mail_info'] = $_SESSION['form_mail'] = $_SESSION['captcha_info'] = '';
$envoieOk = false;

if (!empty($_POST['inscription'])) {
    $_SESSION['erreurs'] = 0;
    //Mot de passe
    if (isset($_POST['mdp'])) {
        $mdp = htmlspecialchars(trim($_POST['mdp']), ENT_QUOTES);
        $mdp_result = checkmdp($mdp, '');
        if ($mdp_result == 'tooshort') {
            $_SESSION['mdp_info'] = '<div class="error">Le mot de passe est trop court, changez-en pour un plus long (minimum 3 caractères).</div><br/>';
            $_SESSION['form_mdp'] = '';
            $_SESSION['erreurs']++;
        } else if ($mdp_result == 'toolong') {
            $_SESSION['mdp_info'] = '<div class="error">Le mot de passe est trop long, changez-en pour un plus court. (maximum 40 caractères)</div><br/>';
            $_SESSION['form_mdp'] = '';
            $_SESSION['erreurs']++;
        } else if ($mdp_result == 'ok') {
            $_SESSION['mdp_info'] = '';
            $_SESSION['form_mdp'] = $mdp;
        } else if ($mdp_result == 'empty') {
            $_SESSION['mdp_info'] = '<div class="error">Merci de saisir un de mot de passe.</div><br/>';
            $_SESSION['form_mdp'] = '';
            $_SESSION['erreurs']++;
        }
    }

    //Mot de passe suite
    if (isset($_POST['mdp_verif'])) {
        $mdp_verif = htmlspecialchars(trim($_POST['mdp_verif']), ENT_QUOTES);
        $mdp_verif_result = checkmdpS($mdp_verif, $mdp);
        if ($mdp_verif_result == 'different') {
            $_SESSION['mdp_verif_info'] = '<div class="error">Le mot de passe de vérification diffère du mot de passe.</div><br/>';
            $_SESSION['form_mdp_verif'] = '';
            $_SESSION['erreurs']++;
            if (isset($_SESSION['form_mdp']))
                unset($_SESSION['form_mdp']);
        }

        else {
            if ($mdp_verif_result == 'ok') {
                $_SESSION['form_mdp_verif'] = $mdp_verif;
                $_SESSION['mdp_verif_info'] = '';
            } else {
                $_SESSION['mdp_verif_info'] = str_replace('passe', 'passe de vérification', $_SESSION['mdp_info']);
                $_SESSION['form_mdp_verif'] = '';
                $_SESSION['erreurs']++;
            }
        }
    }

    //mail
    if (isset($_POST['mail'])) {
        $mail = htmlspecialchars(trim($_POST['mail']), ENT_QUOTES);
        $mail_result = checkmail($mail);
        if ($mail_result == 'isnt') {
            $_SESSION['mail_info'] = '<div class="error">Le mail saisie n\'est pas valide.</div><br/>';
            $_SESSION['form_mail'] = '';
            $_SESSION['erreurs']++;
        } else if ($mail_result == 'exists') {
            $_SESSION['mail_info'] = '<div class="error">Le mail saisie est déjà pris, <a href="../contact.php">contactez-nous</a> si vous pensez à une erreur.</div><br/>';
            $_SESSION['form_mail'] = $mail;
            $_SESSION['erreurs']++;
        } else if ($mail_result == 'ok') {
            $_SESSION['mail_info'] = '';
            $_SESSION['form_mail'] = $mail;
        } else if ($mail_result == 'empty') {
            $_SESSION['mail_info'] = '<div class="error">Vous n\'avez pas entré de mail.</div><br/>';
            $_SESSION['form_mail'] = '';
            $_SESSION['erreurs']++;
        }
    }

    //captcha
    if (strtoupper($_POST['captcha']) == $_SESSION['captcha'] && isset($_POST['captcha']) && isset($_SESSION['captcha'])) {
        $_SESSION['captcha_info'] = '';
    } else {
        $_SESSION['captcha_info'] = '<div class="error">Vous n\'avez pas recopié correctement le contenu de l\'image.</div><br/>';
        $_SESSION['erreurs']++;
    }

    unset($_SESSION['captcha']);

    /*     * ***********Fin étude***************** */


//tout est ok on continue l'inscription
    if ($_SESSION['erreurs'] < 1) {
        /*
         * On insert en base le nouveau membre
         */

        //banni = 0: inscrit validé / 1 : Inscrit non validé / 2 : inscrit banni / 3 : incrit non validé timeout
        $connection = connexionBdd();
        $insert = $connection->prepare('INSERT INTO `prof` (`prof_id` ,                                        
                                        `prof_mdp` ,
                                        `prof_mail` ,
                                        `prof_inscription` ,
                                        `prof_derniere_visite` ,
                                        `prof_banni`)
                                        VALUES(NULL, :password, :email, NOW(), NOW(), 1)');

        // On rempli les paramètres        
        $insert->bindValue(':password', sha1($mdp));
        $insert->bindValue(':email', $mail);

        //on prépare la requête pour l'intertion du code de validation à valider par un lien
        $insertCode = $connection->prepare('INSERT INTO `validation` (`validation_id` ,
                                        `prof_id` ,
                                        `validation_code`)
                                        VALUES (NULL, :idMembres, :code)');
        // On exécute
        try {
            $insert->execute();

            $id_membre = $connection->lastInsertId('prof_id');
            $_SESSION['prof_id'] = $id_membre;
            $_SESSION['prof_mdp'] = sha1($mdp);
            $code = getCodeValidation(12);
            $insertCode->bindValue(':idMembres', $id_membre);
            $insertCode->bindValue(':code', $code);
            $insertCode->execute();
            $insert->closeCursor();
        } catch (Exception $e) {
            $_SESSION['bdd_info'] = '<div class="error">Une erreur technique est venue perturbée votre inscription. Notre équipe technique vient d\en être informée. Merci de renouveler votre opération ultérieurement.</div>';
            $_SESSION['erreurs']++;
            $messageErrMail .=$e->getMessage();
            error_log($messageErrMail, 1, $mailAdmin, $enteteErrLog);
        }
        /*
         * Envoie d'un mail au client
         */
        //définition du sujet
        $sujetMail = '[Inscription] ' . $nomSite;

        //=====Déclaration des messages au format texte et au format HTML.
        $entete = "MIME-Version: 1.0\r\n";
        $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $entete .= "To: $mail\r\n";
        $entete .= "From:$mailSite\r\n";
        $entete .= "Reply-To: $mailSite \n"; // Adresse de retour le demandeur


        $message_html = '<html><head></head><body>';
        $message_html .= 'Bonjour,<br />';
        $message_html .= 'merci de votre inscription sur ' . $nomSite . '<br /><br />';

        $message_html .= 'Voici un rappel de vos codes d\'accès :<br />';
        $message_html .= '<strong>E-mail</strong> : ' . $mail . '<br />';
        $message_html .= '<strong>Password</strong> : ' . $mdp . '<br /><br />';

        $message_html .= 'Cliquez sur le lien suivant pour valider votre compte et profiter de nos services.<br />';
        $message_html .= '<a href="' . $urlSite . '/validation-compte.php?id=' . $id_membre . '&code=' . $code . '">' . $urlSite . '/validation-compte.php?id=' . $id_membre . '&code=' . $code . '</a><br /><br />';
        $message_html .= 'Toute l\'équipe de ' . $nomSite . ' espère vous voir très bientôt sur le site !<br /><br />';
        $message_html .= 'N\'oubliez pas de conserver cet email, il pourra vous être utile.<br /><br />';

        $message_html .= 'Pour toute autre précision, information, intervention, appréciation, suggestion, nous restons à votre écoute. N\'hésitez pas à nous contacter directement par le biais du site.<br />';
        $message_html .= 'Nous vous remercions de la confiance et de l\'intérêt que vous nous portez.<br /><br />';
        $message_html .='Cordialement,<br />l\'équipe ' . $nomSite;

        $message_html .= '</body></html>';

        //=====Envoi de l'e-mail.
        if (mail($mail, $sujetMail, $message_html, $entete)) {
            $envoieMailClient = true;
        } else {
            $envoieMailClient = false;
        }

        /*
         * Envoie d'un mail à l'admini pour signifier une nouvelle inscription
         */

        $sujetMail = '[Inscription] ' . $nomSite;

        //=====Déclaration des messages au format texte et au format HTML.
        $entete = "MIME-Version: 1.0\r\n";
        $entete .= "Content-type: text/html; charset=iso-8859-1\r\n";
        $entete .= "To: $mailAdmin\r\n";
        $entete .= "From:$mailSite\r\n";
        $entete .= "Reply-To: $mailSite \n"; // Adresse de retour le demandeur


        $message_html = '<html><head></head><body>';
        $message_html .= 'Bonjour ,<br />';
        $message_html .= 'Voici la dernière inscription<br /><br />';

        $message_html .= 'Voici un rappel des codes d\'accès :<br />';
        $message_html .= '<strong>E-mail</strong> : ' . $mail . '<br />';
        $message_html .= '<strong>Password</strong> : ' . $mdp . '<br /><br />';

        $message_html .= '</body></html>';

        //=====Envoi de l'e-mail.
        @mail($mailAdmin, $sujetMail, $message_html, $entete);
        //on passe à l'étape 2
        $_SESSION['suite'] = true;
        header('Location: ' . ROOTPATH . '/inscription-2.php');
    }
}

/*
 * Fin Gestion Inscription
 */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Page d'inscription ou de connexion au site Bulletin Facile</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <meta name="description" content="Formulaire de connexion ou d'inscription au site Bulletin Facile"/>
        <meta name="keywords" content="inscription, bulletin, facile, connexion, login, email, password, compte, proffesseur, enseignant, ecole" />
        <meta name="author" content="Wincenty Web" />
        <link rel="icon" href="images/favicon.ico" type="image/x-icon" />
        <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
        <link rel="stylesheet" href="css/style.css" />
        <link rel="stylesheet" href="css/form.css" />
        <link rel="stylesheet" href="css/menu.css" />
        <link rel="stylesheet" href="css/validationEngine.jquery.css" type="text/css"/>
    </head>
</head>
<body>
    <!--==============================header=================================-->
    <?php
    require_once('include/menu.php');
    ?>

    <!--==============================content================================-->
    <div class="bg1">
        <div class="bg">
            <section id="content">
                <div class="container_12">
                    <article class="grid_12">
                        <h1>Inscription/Connexion</h1>
                        <p><strong>Bulletin Facile</strong> est un service demandant une <strong>inscription obligatoire</strong>. Si vous êtes déjà inscrit, vous pouvez utiliser le <strong>formulaire de connexion</strong> situé à gauche.</p>
                        <p>Vous n'êtes pas encore inscrit ? Le <strong>formulaire d'inscription</strong> situé à droite est pour vous. Renseignez l'ensemble des <strong>informations demandées</strong> dans ce formulaire de droite, et vous pourrez passer à l'étape suivante. L'inscription se réalise en <strong>3 étapes</strong> dont cette première étape.</p>
                    </article>
                    <article class="grid_12">
                        <div class="border-bot"></div>
                    </article>
                    <article class="grid_5">
                        <h3>Connexion</h3>
                        <?php
                        echo $msgErr;
                        ?>
                        <form name="connexion" id="stylized" method="post" action="connexion.php">
                            <label for="emailConnexion" class="label">E-mail :</label> <input type="text" name="email" id="emailConnexion" value="<?php if (isset($_SESSION['connexion_email'])) echo $_SESSION['connexion_email']; ?>" placeholder="Votre e-mail" class="input"/><br/>
                            <label for="mdpConnexion" class="label">Passe :</label> <input type="password" name="mdp" id="mdpConnexion" class="input" placeholder="Votre mot de passe"/><br/>
                            <div class="checkbox"><input type="checkbox" name="cookie" id="cookie"/> </div><label for="cookie" class="checkboxLabel">Se souvenir de moi par des cookies ?</label><br/> 
                            <label class="label">&nbsp;</label> <input type="submit" value="Connexion" name="envoyer" class="bouton"/>
                            <label class="label">&nbsp;</label> <a href="oublie-pass.php">Oublie de mot de passe ?</a>                           
                        </form>
                    </article>
                    <article class="grid_6 prefix_1 border1">
                        <h3>Inscription</h3>            
                        <?php
                        if ((!isset($_SESSION['erreurs'])) || ( $_SESSION['erreurs'] > 0)) {
                            ?>
                            <form name="inscription" id="formID" method="post" action="connexion.php" class="formular"> 
                                <label for="mail" class="label">Mail :</label>
                                <?php
                                if (isset($_SESSION['mail_info']))
                                    echo $_SESSION['mail_info'];
                                ?>
                                <input value="<?php echo $_SESSION['form_mail']; ?>" class="input validate[required,custom[email],ajax[ajaxMailCallPhp]] text-input" type="text" name="mail" id="mail"  placeholder="Votre e-mail"/>


                                <label for="mdp" class="label">Mot de passe :</label>
                                <?php
                                if (isset($_SESSION['mdp_info']))
                                    echo $_SESSION['mdp_info'];
                                ?>
                                <input value="<?php echo $_SESSION['form_mdp']; ?>" class="input validate[required,minSize[3],maxSize[40],ajax[ajaxPasswordCallPhp]] text-input" type="password" name="mdp" id="mdp"  placeholder="Votre mot de passe"/>

                                <label for="mdp_verif" class="label">Vérification mot de passe :</label>
                                <?php
                                if (isset($_SESSION['mdp_verif_info']))
                                    echo $_SESSION['mdp_verif_info'];
                                ?>
                                <input value="<?php echo $_SESSION['form_mdp_verif']; ?>" class="input validate[required,equals[mdp]] text-input" type="password" name="mdp_verif" id="mdp_verif"  placeholder="Retapez votre mot de passe"/>

                                <label for="captcha" class="label">Image anti-robots :</label>
                                <?php
                                if (isset($_SESSION['captcha_info']))
                                    echo $_SESSION['captcha_info'];
                                ?>
                                <input type="text" name="captcha" id="captcha" class="input"><br/>

                                    <label class="label">
                                        <img src="<?php echo ROOTPATH; ?>/captcha/recharge.png" width="32px" height="32px" alt="Recharger l'image" title="Recharger l'image" style="cursor:pointer;" onclick="document.images.img_captcha.src = '<?php echo ROOTPATH; ?>/captcha/captcha.php?id=' + Math.round(Math.random(0) * 1000);" />
                                    </label>
                                    <img src="<?php echo ROOTPATH; ?>/captcha/captcha.php" id="img_captcha" class="input"/><!-- (JavaScript) Recharge l'image car elle n'existe pas dans le cache du navigateur, grâce à l'id généré  -->


                                    <label class="label">&nbsp;</label><input type="submit" value="Inscription" name="inscription" class="bouton"/>
                            </form>
                            <?php
                        } else {
                            echo '<p>Afin de valider votre inscription, un mail contenant un lien d\'activation vient de vous être envoyé.</p>
            <p>Merci de cliquer sur le lien de ce mail, pour finaliser votre insciption et profiter pleinement des ressources du site.</p>
            <p>L\'équipe ' . $nomSite . '</p>';
                        }
                        ?>


                    </article>
                </div>
            </section>

            <!--==============================footer=================================-->
            <script src="js/jquery-1.8.2.min.js" type="text/javascript"></script>
            <script src="js/languages/jquery.validationEngine-fr.js" type="text/javascript" charset="utf-8"></script>
            <script src="js/jquery.validationEngine.js" type="text/javascript" charset="utf-8"></script>
            <script>
                                        jQuery(document).ready(function() {
                                            jQuery("#formID").validationEngine();

                                            $("#formID").bind("jqv.field.result", function(event, field, errorFound, prompText) {
                                                console.log(errorFound)
                                            })
                                        });
            </script>
            <?php
//            echo '<pre>';
//                print_r($GLOBALS);
//                echo '</pre>';
            require_once 'include/footer.php';
            ?>
        </div>
    </div>
</body>
</html>